<html>
    <head>
        <title>导言</title>
    </head>
    <body>
        <script>
            // 对象映射

                    /*
                            将一个对象映射到另一个对象是很常见的。

                            这也很乏味和重复，因为通常两个类有具有相互映射的相同或相似的属性。

                            想象一下一个典型的应用程序服务方法：

                                    public class UserAppService : ApplicationService
                                    {
                                        private readonly IRepository<User, Guid> _userRepository;

                                        public UserAppService(IRepository<User, Guid> userRepository)
                                        {
                                            _userRepository = userRepository;
                                        }

                                        public async Task CreateUser(CreateUserInput input)
                                        {
                                            // 手动映射属性...
                                            var user = new User
                                            {
                                                Name = input.Name,
                                                Surname = input.Surname,
                                                EmailAddress = input.EmailAddress,
                                                Password = input.Password
                                            };

                                            await _userRepository.InsertAsync(user);
                                        }
                                    }

                            CreateUserInput是一个简单的DTO类，User是一个简单的实体。
                            
                            上面的代码从给定的输入对象创建一个User实体。User实体将在现实世界的应用程序中拥有更多属性，手动创建它将变得乏味且容易出错。
                            
                            当你向User和CreateUserInput类添加新属性时，你还必须更改映射代码。

                            我们可以使用库来自动处理这种映射，并有一个集成包来使用 AutoMapper作为对象映射器。

                    */

        </script>
    </body>
</html>